package repair

// 漏洞等级
// 参考https://wenku.baidu.com/view/a272429282c758f5f61fb7360b4c2e3f5627254e.html?_wkts_=1705287285751&bdQuery=%E6%BC%8F%E6%B4%9E%E7%AD%89%E7%BA%A7
var VulLevel = map[int]string{
	0: "提示(Info)",
	1: "低危(Low)",
	2: "中危(Medium)",
	3: "高危(High)",
	4: "严重(Critical)",
}
var VulType = map[int]string{
	0:  "基础(basis)",
	1:  "信息泄露(Information Exposure)",
	2:  "信息猜解(Information guessing)",
	3:  "认证信息泄露(Authentication information leakage)",
	4:  "认证功能缺陷(Defect in authentication function)",
	5:  "会话管理缺陷(Session management defects)",
	6:  "密码找回/修改漏洞(Password retrieval/modification)",
	7:  "业务逻辑缺陷(Business logic defects)",
	8:  "业务功能滥用(Abuse of business functions)",
	9:  "防护功能失效(Protection function failure)",
	10: "防护功能缺失(Lack of protective function)",
	11: "防护功能滥用(Abuse of protective functions)",
	12: "权限缺失(Missing permissions)",
	13: "权限篡改(Permission tampering)",
	14: "数据验证缺失(Missing data validation)",
	15: "其他(other)",
}

var Rules = []RepairType{
	{
		Name:         `robots.txt泄漏敏感信息`,
		Describe:     `搜索引擎可以通过robots文件可以获知哪些页面可以爬取，哪些页面不可以爬取。Robots协议是网站国际互联网界通行的道德规范，其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯，如果robots.txt文件编辑的太过详细，反而会泄露网站的敏感目录或者文件，比如网站后台路径，从而得知其使用的系统类型，从而有针对性地进行利用。`,
		Level:        1,
		Type:         []int{1},
		RiskAnalysis: `攻击者可通过发现robots.txt文件，收集网站的敏感目录或文件，从而有针对性的进行利用。`,
		RepairSug: []string{
			`检查和移除敏感信息：审查当前的Robots.txt文件，确保其中不包含敏感信息，例如数据库连接信息、管理员页面链接等。如果有，立即将其删除或修改`,
			`限制访问权限：使用Robots.txt文件限制搜索引擎爬虫对敏感页面的访问。确保只有公共页面被搜索引擎索引，而敏感页面被排除在外`,
			`使用元标签： 在网页的HTML头部使用meta标签中的robots属性来进一步指定搜索引擎的访问规则。这有助于确保页面级别的控制，而不仅仅依赖于Robots.txt文件`,
			`定期检查和更新：定期检查Robots.txt文件，确保其中的规则仍然适用。随着网站内容的变化，可能需要更新Robots.txt文件以反映最新的情况`,
			`监控日志： 监控网站访问日志，特别关注搜索引擎爬虫的行为。及时发现异常访问可以帮助您迅速采取措施`,
			`使用权限控制：强化网站的身份验证和权限控制机制，确保只有授权用户能够访问敏感信息。这可以通过使用强密码、多因素认证等手段来实现`,
			`备份Robots.txt文件：在做出任何修改之前，备份当前的Robots.txt文件，以防需要回滚到之前的状态`,
			`考虑使用robots meta标签：在页面的HTML头部使用robots meta标签，这允许您对每个页面指定访问规则，而无需依赖于全站的Robots.txt文件`,
			`定期安全审计：进行定期的安全审计，以确保网站的所有部分都得到适当的保护，并且没有任何潜在的敏感信息泄漏问题`,
		},
		Link: []string{
			"https://chat.openai.com",
		},
	}, {
		Name:         `敏感文件信息泄漏`,
		Describe:     `敏感数据包括但不限于：口令、密钥、证书、会话标识、License、隐私数据（如短消息的内容）、授权凭据、个人数据（如姓名、住址、电话等）等，在程序文件、配置文件、日志文件、备份文件及数据库中都有可能包含敏感数据。`,
		Level:        2,
		Type:         []int{0, 1},
		RiskAnalysis: `攻击者可通过上述方式获取网站敏感文件，收集网站敏感信息，从而有针对性的进行利用。`,
		RepairSug: []string{
			`禁止在代码中存储敏感数据：禁止在代码中存储如数据库连接字符串、口令和密钥之类的敏感数据，这样容易导致泄密。用于加密密钥的密钥可以硬编码在代码中`,
			`禁止密钥或帐号的口令以明文形式存储在数据库或者文件中：密钥或帐号的口令必须经过加密存储。例外情况，如果Web容器的配置文件中只能以明文方式配置连接数据库的用户名和口令，那么就不用强制遵循该规则，将该配置文件的属性改为只有属主可读写`,
			`禁止在 cookie 中以明文形式存储敏感数据：cookie信息容易被窃取，尽量不要在cookie中存储敏感数据；如果条件限制必须使用cookie存储敏感信息时，必须先对敏感信息加密再存储到cookie`,
			`禁止在隐藏域中存放明文形式的敏感数据`,
			`禁止用自己开发的加密算法，必须使用公开、安全的标准加密算法`,
			`禁止在日志中记录明文的敏感数据：禁止在日志中记录明文的敏感数据（如口令、会话标识jsessionid等），防止敏感信息泄漏`,
			`禁止带有敏感数据的Web页面缓存：带有敏感数据的Web页面都应该禁止缓存，以防止敏感信息泄漏或通过代理服务器上网的用户数据互窜问题`,
		},
		Link: []string{
			"https://www.nsfocus.com.cn/",
		},
	}, {
		Name:         `过时的、用于备份的或者开发文件残留`,
		Describe:     `应用遗留的过时文件、备份页面、渗透测试遗留文件、开发文件残留的测试文件等。`,
		Level:        2,
		Type:         []int{0, 1},
		RiskAnalysis: `攻击者可通过上述方式获取网站备份文件、过时文件、遗留文件等内容，收集网站敏感信息，从而有针对性的进行利用。`,
		RepairSug: []string{
			`网站管理员严格检查web中可访问的路径下是否存在备份文件，常见备份文件后缀为.jsp.bak、.bak、.sql、.txt、等等。如果有这些文件，直接将该备份文件进行转移到其他目录或者直接删除即可。`,
			`严格控制可网站可访问目录下的文件敏感度的存放问题，不要将敏感文件置于该目录。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `报错页面敏感信息泄漏`,
		Describe:     `错误页面由服务器产生403、404、500等错误时，返回详细错误信息。报错信息中可能会包含服务器代码信息、数据库连接信息、SQL语句或者敏感文件的路径，为攻击者收集信息提供了方便。`,
		Level:        1,
		Type:         []int{1},
		RiskAnalysis: `攻击者可通过上述几种方式触发Web应用程序报错，提取报错0的敏感信息，如Web中间件的版本信息、数据库连接信息。`,
		RepairSug: []string{
			`编码时增加异常处理模块，对错误页面做统一的自定义返回界面，隐藏服务器版本信息。`,
			`不对外输出程序运行时产生的异常错误信息详情。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `物理路径泄漏`,
		Describe:     `应用中泄露出应用在主机中的绝对地址路径。`,
		Level:        1,
		Type:         []int{0, 1},
		RiskAnalysis: `攻击者可通过获取网站物理路径，为下一步攻击做准备。`,
		RepairSug: []string{
			`媒体链接和超链接采用相对路径的表达方式。`,
			`报错信息中不对外输出网站物理路径等敏感信息。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `明文密码本地保存`,
		Describe:     `明文密码保存在本地客户端或Cookie、Local Storage、Session Storage中存储明文密码或哈希。`,
		Level:        2,
		Type:         []int{1},
		RiskAnalysis: `攻击者可通过嗅探或直接查看源代码的方式获取传输到前端的账号密码、Cookie，登录他人账号。`,
		RepairSug: []string{
			`禁止将密码保存到本地客户端，即便是加密后的密码也不建议保存在本地，攻击者可利用密文格式的密码登录或修改其他账户的密码。`,
			`删除或隐藏域和Cookie中存在密码或哈希。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `入侵痕迹残留`,
		Describe:     `在渗透过程中发现应用中存在曾经的入侵痕迹，如存在的webshell文件。`,
		Level:        3,
		Type:         []int{1},
		RiskAnalysis: `残留的入侵痕迹可被其他攻击者用于二次攻击，对网站造成一定的影响。`,
		RepairSug: []string{
			`可借助工具全盘清理入侵痕迹，如D盾可以扫描Windows系统中的webshell。另外，通过应急响应排查攻击者入侵途径，进行漏洞修复。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `HTTP头信息泄漏`,
		Describe:     `在服务器返回的HTTP头中泄露服务器信息。`,
		Level:        1,
		Type:         []int{1},
		RiskAnalysis: `攻击者可通过获取服务器banner信息，针对某个版本存在的漏洞进行定向攻击。`,
		RepairSug: []string{
			`隐藏或者修改banner信息。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `目录泄露`,
		Describe:     `目录泄露漏洞是由于网站存在配置缺陷，存在目录可浏览漏洞，这会导致网站很多隐私文件与目录泄露，比如数据库备份文件、配置文件等，攻击者利用该信息可以更容易得到网站权限，导致网站被黑。`,
		Level:        2,
		Type:         []int{0, 1},
		RiskAnalysis: `攻击者通过访问网站某一目录时，该目录没有默认首页文件或没有正确设置默认首页文件，将会把整个目录结构列出来，将网站结构完全暴露给攻击者；攻击者可能通过浏览目录结构，访问到某些隐秘文件（如PHPINFO文件、服务器探针文件、网站管理员后台访问地址、数据库连接文件等）。`,
		RepairSug: []string{
			`IIS中关闭目录浏览功能：在IIS的网站属性中，勾去“目录浏览”选项，重启IIS。`,
			`Apache中关闭目录浏览功能：打开Apache配置文件httpd.conf，查找“Options Indexes FollowSymLinks”，修改为“Options-IndexesFollowSymLinks”(减号表示取消)，保存退出，重启Apache。`,
			`Nginx中默认不会开启目录浏览功能，若您发现当前已开启该功能，可以编辑nginx.conf文件，删除如下两行：autoindex on;autoindex_exact_size on;重启Nginx。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `默认页面泄漏`,
		Describe:     `存在默认安装中间件、插件、框架等会携带示例页面及说明文档。`,
		Level:        2,
		Type:         []int{1},
		RiskAnalysis: `攻击者可利用默认页面提供的功能和信息对服务器进行攻击。`,
		RepairSug: []string{
			`建议在不影响业务的前提下删除默认页面。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `存在可访问的管理后台入口`,
		Describe:     `应用存在未限制访问的后台，或者能直接登录管理后台。`,
		Level:        2,
		Type:         []int{1},
		RiskAnalysis: `攻击者可通过登录网站管理后台篡改页面，窃取或修改后台业务数据，或利用上传功能上传webshell，导致服务器被控制。`,
		RepairSug: []string{
			`建议在不影响业务的前提下，将管理后台隐藏在非常规目录下或增加管理后台的访问限制，同时注意避免使用弱口令或者默认口令。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `存在可访问的管理控制台入口`,
		Describe:     `Web 控制台是一种基于 Web 的用户界面，其常常被用于网站后台或者web容器控制台中，其不仅仅局限于容器或者网站管理后台，还包括一些数据库默认地址等。在web安全中，网站系统在泄漏其web容器（中间件）或者数据库的控制台后，存在增加被入侵的风险。常见的web控制台包括以下多种：tomcat、aria2、weblogic、websphere、oracle、jboss等。这些web的容器控制台常见访问形式：http://hostname:port/load/，例如：http://x.x.x.x:8080/manage/。`,
		Level:        2,
		Type:         []int{1},
		RiskAnalysis: `攻击者使用弱口令扫描工具或者直接使用常见的弱口令去尝试登录Web中间件的管理控制后台，然后通过部署war包上传webshell，进而控制整个系统。`,
		RepairSug: []string{
			`对于必须暴露于公网或者其他网络中的控制台地址，则为其地址做访问白名单措施，即只允许白名单以内的用户IP地址可以访问到该控制台，通过过滤器（filter）实现：创建客户端IP过滤器ClientIpFilter、在web.xml中部署过滤器ClientIpFilter。`,
			`修改控制台默认的用户名和密码，并为其控制台设置强壮的口令措施，防止可被恶意或简单猜解得到用户名和密码。`,
			`修改web容器控制台的默认端口，默认路径，避免可被直接利用，访问得到地址。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `参数溢出`,
		Describe:     `攻击者在参数中输入超长字符串，导致数据溢出，致使应用或者数据库报错引发相关0，或者引起拒绝服务攻击等问题。另外，参数溢出技术也可用于绕过WAF，如果WAF处理的用户提交的参数时超出其能接收的最大长度，则可能引发WAF被绕过。`,
		Level:        2,
		Type:         []int{1},
		RiskAnalysis: `攻击者可通过输入参数溢出触发应用服务器异常、服务器拒绝服务或者绕过WAF。`,
		RepairSug: []string{
			`限制输入参数内容的长度。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `账号枚举`,
		Describe:     `存在于系统登录页面，利用登陆时输入系统存在的用户名错误密码和不存在的用户名错误密码，返回不同的出错信息可枚举出系统中存在的账号信息。`,
		Level:        1,
		Type:         []int{0, 2},
		RiskAnalysis: `攻击者根据Web应用程序返回的上述提示信息即可枚举系统中存在的登录用户名，然后针对枚举出来的登录用户名，对其密码进行暴力破解。`,
		RepairSug: []string{
			`建议对网站登录页面的判断回显信息修改为一致：用户名或密码错误。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `存在弱口令`,
		Describe:     `认证登录环节存在弱口令。`,
		Level:        3,
		Type:         []int{0, 2},
		RiskAnalysis: `攻击者可利用互联网公开的常见弱口令尝试登录管理后台，进而利用后台管理功能窃取或修改数据，甚至可能通过对后台进行漏洞挖掘及利用最终获取服务器权限。`,
		RepairSug: []string{
			`强制用户首次登录时修改默认口令或是使用用户自定义初始密码的策略。`,
			`完善密码策略，信息安全最佳实践的密码策略为8位（包括）以上字符，包含数字、大小写字母、特殊字符中的至少3种。`,
			`增加人机验证机制，限制ip访问次数。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `存在空口令`,
		Describe:     `认证登录环节允许空口令`,
		Level:        3,
		Type:         []int{0, 2},
		RiskAnalysis: `攻击者可利用该漏洞登录网站后台，操作敏感数据，甚至上传webshell，从而控制服务器。`,
		RepairSug: []string{
			`禁止空口令登录。`,
			`强制用户首次登录时修改默认口令或是使用用户自定义初始密码的策略。`,
			`完善密码策略，信息安全最佳实践的密码策略为8位（包括）以上字符，包含数字、大小写字母、特殊字符中的至少3种。`,
			`增加人机验证机制，限制ip访问次数。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `存在暴力破解`,
		Describe:     `常常存在于网站的登录系统中，通过对已知的用户名，进行对其登录口令的大量尝试，或者对常见弱口令，对其进行用户名的大量尝试。`,
		Level:        2,
		Type:         []int{0, 2},
		RiskAnalysis: `攻击者一般会使用自动化脚本组合出常见的用户名和密码，即字典，再结合软件Burpsuite的intruder功能进行暴力破解。`,
		RepairSug: []string{
			`如果用户登录次数超过设置的阈值，则锁定帐号(有恶意登录锁定帐号的风险)。`,
			`如果某个IP登录次数超过设置的阈值，则锁定IP。`,
			`增加人机验证机制。`,
			`检查密码的时候适当的插入一些暂停，可以减缓攻击，但是可能对用户造成一定的影响。`,
			`验证码必须在服务器端进行校验，客户端的一切校验都是不安全的。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `敏感信息遍历`,
		Describe:     `在接口参数中输入工号、姓名、手机号等某一信息之后信息后，会在返回包中返回参数对应的其他信息，造成0。`,
		Level:        2,
		Type:         []int{0, 2},
		RiskAnalysis: `攻击者根据输入某一信息，泄露出其他有用信息，如手机号、姓名、身份证、密码、住址等，造成0。`,
		RepairSug: []string{
			`增加验证码，验证码是阻止暴力攻击的好方法，图形验证码或短信验证码均可。`,
			`对返回信息进行脱敏或加密处理。`,
			`限制尝试次数，防止进行批量探测数据。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `传输过程泄漏`,
		Describe:     `认证或者修改密码等传输过程中未对密码等敏感信息加密。`,
		Level:        2,
		Type:         []int{3},
		RiskAnalysis: `攻击者通过在局域网中嗅探网络流量，获取明文传输的认证凭证，如用户名密码、SESSIONID等敏感信息。`,
		RepairSug: []string{
			`建议按照网站的密级要求，需要对密码传输过程中进行加密得使用加密的方式传输，如使用HTTPS，但加密的方式增加成本，或许会影响用户体验。如果不用HTTPS，可以在网站前端用 Javascript 做密码加密，加密后再进行传输。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `OAuth认证缺陷`,
		Describe:     `OAuth是一个在不提供用户名和密码的情况下，授权第三方应用访问Web资源的安全协议。OAuth本身而言是一套很严谨的结构，但是很多开发者在部署OAuth的时候，因为疏忽而产生很多安全隐患，可能导致攻击者利用漏洞登录其他用户账号。`,
		Level:        3,
		Type:         []int{4},
		RiskAnalysis: `攻击者结合OAuth认证缺陷和钓鱼攻击可定向的登录某个用户的账户。`,
		RepairSug: []string{
			`各应用除了验证access token之外，还必须辅助其他参数进行判断（比如自行加入其它认证参数进行双重认证）；另一种方法则是验证access token背后所属的应用app key的唯一性和对应性（无论是自行验证还是开放平台通过签名等形式帮助验证），确保该access token是该应用的。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `多点认证缺陷`,
		Describe:     `系统允许多点认证`,
		Level:        1,
		Type:         []int{4},
		RiskAnalysis: `攻击者在获取到其他用户的账号密码后，可利用该缺陷在用户已登录且未知的情况下进行登录，操作用户账户。`,
		RepairSug: []string{
			`建议在不影响业务的前提下，关键业务系统应禁止多点认证。当同一账号在其他地方登录时已登录的账号应退出会话，并提示用户账户在其他地区登录，可能存在账号被盗风险。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `登录次数限制绕过`,
		Describe:     `通过自定义请求方法、添加欺诈IP、特殊字符等方式绕过系统登录次数限制，从而进行暴力破解。`,
		Level:        2,
		Type:         []int{4},
		RiskAnalysis: `攻击者可通过绕过登录次数限制方式，进行系统账户密码暴力破解系统。`,
		RepairSug: []string{
			`用户请求登录接口时将请求的IP地址和请求的时间记录，对应的时间加500毫秒。`,
			`判断该IP地址对应的时间和当前时间的大小，如果大于当前时间则表明请求频繁，因为只有频繁的请求后对应的时间才会累积的超过当前时间。`,
			`当请求频繁次数超过20次时将IP地址的时间大小加2小时，并提示涉嫌暴力登录，2小时后重试。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `注销后会话未失效`,
		Describe:     `用户退出系统后，服务器端Session未失效，攻击者可利用此Session向服务器继续发送服务请求。`,
		Level:        1,
		Type:         []int{5},
		RiskAnalysis: `攻击者通过网络嗅探或者钓鱼攻击窃取用户的Session信息，在用户注销系统后，如服务器端未直接清理此Session，则攻击者仍可利用窃取到的Session成功访问系统直到Session过期。`,
		RepairSug: []string{
			`用户退出系统后，服务器端应清空此用户的Session信息。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `会话固定`,
		Describe:     `会话固定漏洞是把一个无效的或者说低权限的令牌提升为高权限的令牌，而这个令牌标识是攻击者可以控制的。`,
		Level:        1,
		Type:         []int{5},
		RiskAnalysis: `攻击者可能会窃取或操纵客户会话和cookie，用于模仿合法用户，从而以该用户身份查看或变更用户记录以及执行事务。`,
		RepairSug: []string{
			`在用户提供的认证信息（例如用户名和密码）、相应的权限级别发生变化时，服务器端应重新生成SessionID，并强制失效之前的会话。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `密码重置链接可预测`,
		Describe:     `邮件中的重置密码链接可预测，导致链接可以直接被猜解访问。`,
		Level:        3,
		Type:         []int{6},
		RiskAnalysis: `攻击者通过猜测重置密码链接可重置他人账户的密码。`,
		RepairSug: []string{
			`重置密码链接中的token使用安全随机数。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `任意密码重置`,
		Describe:     `用户名、手机号、验证码三者没有统一进行验证，仅判断了三者中的手机号和验证是否匹配和正确，如果正确则判断成功并进入下一流程。`,
		Level:        3,
		Type:         []int{6},
		RiskAnalysis: `因系统未做严格的权限区分，攻击者仅通过获取到的用户名信息或其它公开信息即可重置任意账户密码。`,
		RepairSug: []string{
			`一次填写检查信息(原始密码、新密码等)后，递交修改密码请求。`,
			`对客户端递交的修改密码请求，对应请求的用户身份和当前登录的用户身份进行验证，判断是否有权修改用户的密码，也判断原始密码是否正确。`,
			`不受验证信息的手机、邮箱等信息不应全部明确传达给客户，不应屏蔽手机、邮箱等信息，不应返回客户端。`,
			`验证原始密码时，限制输入原始密码的错误次数，防止攻击者暴力破解原始密码。`,
			`重置密码链接的重要信息应随机化，无法预测(例如token机制)，禁止将重要信息返回客户端。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `验证码可被穷举`,
		Describe:     `密码修改一般会将验证码发送到用户的手机号码或者邮箱中，如果验证码过于简单，如纯4位数字，则容易遭受验证码被穷举风险。`,
		Level:        3,
		Type:         []int{6},
		RiskAnalysis: `攻击者通过穷举验证码可重置他人账户的密码。`,
		RepairSug: []string{
			`避免使用过于简单的验证码，尽量使用字母和数字组合4位及以上验证码。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `session 覆盖测试`,
		Describe:     `在重置密码时，服务端可能会通过读取当前session会话来判断当前需要修改密码的账号，用户可能会通过覆盖session来对其它用户的密码进行修改。`,
		Level:        3,
		Type:         []int{6},
		RiskAnalysis: `攻击者通过session覆盖可重置他人账户的密码。`,
		RepairSug: []string{
			`在更新密码请求中对用户的账号和验证码再次进行校验。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `凭证返回客户端`,
		Describe:     `在重置密码流程中获取验证时可能服务器会把验证码返回给客户端，造成修改任意用户密码漏洞。`,
		Level:        3,
		Type:         []int{6},
		RiskAnalysis: `攻击者只需要通过获取响应包中的验证码即可重置他人账号的密码。`,
		RepairSug: []string{
			`验证码不返回给客户端。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `客户端校验绕过`,
		Describe:     `在重置密码中服务器对用户提交的验证码进行校验，如果校验成功则返回响应的特征值，如1、true、success，如果失败则对应返回0、false、fail。但是如果根据服务端返回特征值来判断下一步是否能进入密码重置页面的校验动作由客户端完成的话则会被绕过，从而修改任意用户密码。`,
		Level:        3,
		Type:         []int{6},
		RiskAnalysis: `攻击者通过篡改响应包结果来绕过客户端校验，从而进入密码重置页面修改他人账户的密码。`,
		RepairSug: []string{
			`不要在客户端进行校验，应该交由服务端进行校验。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `用户账户参数修改`,
		Describe:     `在对密码修改时，服务器可能会根据用户提交的用户账号参数判断对哪个用户的密码进行修改，如果服务端没有对用户提交的数据进行校验，则可能引发任意用户密码修改漏洞。`,
		Level:        3,
		Type:         []int{6},
		RiskAnalysis: `攻击者通过篡改修改数据包中的账号参数修改他人账户的密码。`,
		RepairSug: []string{
			`不要在客户端进行校验，应该交由服务端进行校验。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `负值反冲/正负值对冲`,
		Describe:     `应用程序未校验订单数据的取值范围，交易存在负值反冲。`,
		Level:        3,
		Type:         []int{7},
		RiskAnalysis: `通过篡改订单参数，使得订单金额为负值，在使用余额支付时余额反而增加。`,
		RepairSug: []string{
			`服务器端在生成交易订单时，商品的价格从数据库中取出，禁止使用客户端发送的商品价格。`,
			`服务器端对客户端提交的交易数据（如商品ID、商品数量、商品价格等）的取值范围进行校验，将商品ID和商品价格与数据库中的数据对比校验，商品数量为大于零的整型数。`,
			`服务器端在生成支付订单时，对支付订单中影响支付金额的所有因素（比如商品ID、商品数量、商品价格、订单编号等）进行签名，对客户端提交的支付订单进行校验。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `业务流程绕过`,
		Describe:     `业务逻辑流程分步骤进行且能越过中间校验步骤直接进行后续操作，导致中间校验等步骤失效。`,
		Level:        3,
		Type:         []int{7},
		RiskAnalysis: `攻击者可利用该漏洞绕过业务流程检测，进行非法修改他人密码等危险操作。`,
		RepairSug: []string{
			`建议在不影响业务的前提下，在Session中添加对每一步流程页面的校验标志位，在新步骤页面浏览过程中，仅能够顺序执行页面校验，不可进行跳步操作，例如：页面二完成后，应更新Flag=3，则仅能够打开页面三。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `短信验证码滥用`,
		Describe:     `可使用当前手机号码发送的短信验证码，对其他手机号码执行修改操作。`,
		Level:        3,
		Type:         []int{8},
		RiskAnalysis: `攻击者可利用该漏洞滥用验证码，执行任意注册账户、任意修改账户密码等操作。`,
		RepairSug: []string{
			`发在执行注册账户、修改密码等功能进行服务端校验。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `邮箱验证码滥用`,
		Describe:     `可使用当前邮箱发送的邮箱验证码，对其他邮箱账号执行修改操作。`,
		Level:        3,
		Type:         []int{8},
		RiskAnalysis: `攻击者可利用该漏洞滥用验证码，执行任意注册账户、任意修改账户密码等操作。`,
		RepairSug: []string{
			`在执行注册账户、修改密码等功能进行服务端校验。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `短信可定向转发`,
		Describe:     `短信接收人可任意指定。`,
		Level:        3,
		Type:         []int{8},
		RiskAnalysis: `攻击者可利用该漏洞将验证码发送到任意的手机号上，重置他人密码或转账。`,
		RepairSug: []string{
			`发送短信时手机号从当前会话中获取，避免从前端传入。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `邮件可定向转发`,
		Describe:     `应用系统发送邮件的接收人可由客户端任意指定。`,
		Level:        3,
		Type:         []int{8},
		RiskAnalysis: `攻击者可利用该漏洞将邮件发送到任意的邮箱中，重置他人密码。`,
		RepairSug: []string{
			`发送邮件时邮箱从当前会话中获取，避免从前端传入。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `引用第三方不可控脚本/URL`,
		Describe:     `页面中引用了不可控的脚本或超链接。`,
		Level:        2,
		Type:         []int{8},
		RiskAnalysis: `攻击者可在网站中插入恶意链接或脚本，导致正常用户浏览时cookie被窃取或被种植病毒木马。`,
		RepairSug: []string{
			`建议在不影响业务的前提下，对网站引用的文件和源代码进行审查，一经发现有未审批的外链或脚本，应立即删除。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `未验证的URL跳转`,
		Describe:     `服务端未对传入的跳转url变量进行检查和控制，可能导致可恶意构造任意一个恶意地址，诱导用户跳转到恶意网站。`,
		Level:        3,
		Type:         []int{8},
		RiskAnalysis: `攻击者利用URL跳转漏洞来欺骗安全意识低的用户，从而导致“中奖”之类的欺诈事件发生。同时利用URL跳转，也可以突破常见的基于“白名单方式”的一些安全限制，如传统IM里对于URL的传输会进行安全校验，但是对于知名网站的域名及URL将直接允许通过并且显示为可信的URL，一旦该可信的URL里包含URL跳转漏洞将导致安全限制被绕过。`,
		RepairSug: []string{
			`限制Referer（Referer是HTTP header中的字段，当浏览器向web服务器发送请求时，一般会带上Referer，告诉服务器是从哪个页面链接过来的），通过限制Referer保证将要跳转URL的有效性，避免攻击者生成自己的恶意跳转链接。`,
			`加入有效性验证Token，保证所有生成的链接都来自于可信域，通过在生成的链接里加入用户不可控的Token对生成的链接进行校验。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `SSRF服务器端请求伪造`,
		Describe:     `SSRF服务器端请求伪造是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下，SSRF攻击的目标是从外网无法访问的内部系统。SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。`,
		Level:        3,
		Type:         []int{8},
		RiskAnalysis: `攻击者利用ssrf可以实现的攻击主要有5种：可以对服务器所在内网、本地进行端口扫描，获取一些服务的banner信息；攻击运行在内网或本地的应用程序（比如溢出）；对内网web应用进行指纹识别，通过访问默认文件实现；攻击内外网的web应用，主要是使用get参数就可以实现的攻击（比如struts2，sqli等）；利用file协议读取本地文件等。`,
		RepairSug: []string{
			`过滤内网服务器对公网服务器请求的响应。如果Web应用是获取某一类型的文件，在把返回结果展示给用户之前应先验证返回的信息是否符合文件类型标准，比如返回信息应为图片，如果返回信息是HTML，则停止将返回信息返回客户端。`,
			`统一错误提示信息，避免用户可以根据错误信息来判断远端服务器的端口状态。`,
			`在内网服务器的防火墙上限制公网服务器的请求端口为HTTP等协议常用端口，如：80、443、8080、8090。`,
			`若公网服务器的内网IP与内网无业务通信，建议将公网服务器对应的内网IP列入黑名单，避免应用被用来获取内网数据。`,
			`内网服务器禁用不必要的协议，仅允许HTTP和HTTPS请求，防止类似于file:///、gopher://、ftp://等协议引起的安全问题。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `短信内容可控`,
		Describe:     `短信内容可从客户端指定。`,
		Level:        2,
		Type:         []int{8},
		RiskAnalysis: `攻击者可利用该漏洞，借助短信平台，编辑钓鱼短信发送给其他用户。`,
		RepairSug: []string{
			`建议在不影响业务的前提下，禁止客户端编辑短信内容。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `邮件内容可控`,
		Describe:     `应用系统发送邮件的邮件内容可由客户端任意指定。`,
		Level:        2,
		Type:         []int{8},
		RiskAnalysis: `攻击者可利用该漏洞，借助邮件平台，编辑钓鱼邮件发送给其他用户。`,
		RepairSug: []string{
			`建议在不影响业务的前提下，禁止客户端编辑邮件内容。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `批量提交`,
		Describe:     `应用程序未使用验证码等防自动化操作的方法，可批量提交请求，如批量注册。`,
		Level:        2,
		Type:         []int{8},
		RiskAnalysis: `注册不需要验证码时，攻击者通过编写自动化脚本，实现程序自动提交注册信息；若注册需要验证码，但验证码位数不多于4位且为纯数字时，通过使用软件Burpsuite的intruder功能穷举得到正确的验证码后，再结合自动化脚本工具即可实现批量注册垃圾账号。`,
		RepairSug: []string{
			`使用安全性强的验证码，验证码应从以下方面保证其安全性：验证码长度不低于4位，避免使用容易被程序自动识别的验证码，验证码不应返回客户端。`,
			`用户注册功能处，提交注册信息后进行邮箱或短信验证通过后再将注册信息写入数据库。`,
			`对同一IP地址短时间内提交请求的次数进行限制。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `账号弱锁定机制`,
		Describe:     `系统帐号锁定时间太短。`,
		Level:        1,
		Type:         []int{9},
		RiskAnalysis: `若账户锁定时间过短，攻击者仍可利用其进行暴力破解。`,
		RepairSug: []string{
			`建议在不影响业务的前提下，账户在多次尝试失败后锁定时间不低于3分钟。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `滑块验证码绕过`,
		Describe:     `滑块验证码可被绕过，执行暴力破解等操作。`,
		Level:        2,
		Type:         []int{9},
		RiskAnalysis: `滑块验证码一般是防止使用程序恶意注册、暴力破解用户名密码或者批量发帖而设置的。在页面初始化时服务器向页面发送一个随机图形，同时在Session里也保存一份，当用户提交时将滑动距离一起post到后台，通过与Session中保存的值对比，如果不相同，则有可能是恶意攻击。`,
		RepairSug: []string{
			`系统在开发时注意验证识别后销毁session中的验证码。`,
			`限制用户提交的验证码不能为空。`,
			`判断提交的验证码与服务器上存储的是否一致。`,
			`不要返回正确滑块坐标。`,
			`减少验证码容错并完全随机。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `图形验证码绕过`,
		Describe:     `图形验证码可被绕过，执行暴力破解等操作。`,
		Level:        1,
		Type:         []int{9},
		RiskAnalysis: `图形验证码一般是防止使用程序恶意注册、暴力破解用户名密码或者批量发帖而设置的。在页面初始化时服务器向页面发送一个随机字符串，同时在Session里也保存一份，当用户提交时将随机数一起post到后台，通过与Session中保存的值对比，如果不相同，则有可能是恶意攻击。`,
		RepairSug: []string{
			`系统在开发时注意验证识别后销毁session中的验证码。`,
			`限制用户提交的验证码不能为空。`,
			`判断提交的验证码与服务器上存储的是否一致。`,
			`禁止将验证码明文信息发送至客户端。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `短信验证码绕过`,
		Describe:     `短信验证码可被绕过，执行其他操作。`,
		Level:        2,
		Type:         []int{9},
		RiskAnalysis: `注册/登录/重置密码、交易操作等功能通常需要短信验证码，若验证码可绕过，攻击者可利用该漏洞进行重置他人密码或转账等危险操作。`,
		RepairSug: []string{
			`若存在特权验证码，建议将其删除。`,
			`应用服务端应严格校验验证码参数是否为空，格式是否正确。`,
			`关键操作每提交一次请求，应发送新的短信验证码，并且不可继续使用旧的验证码。`,
			`验证码由后端随机生成并且不能返回给前台用户。`,
			`验证码有效时间控制在一分钟，并且设置错误次数不超过5次。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `来源 ip 限制失效`,
		Describe:     `关键系统或关键接口使用黑白名单ip来源限制，例如微信密钥接口、泛微OA等情况，如果来源ip是从header头中获取将导致ip来源绕过问题。`,
		Level:        2,
		Type:         []int{9},
		RiskAnalysis: `关键接口和关键系统存在ip来源限制时，攻击者使用header头伪造ip进行绕过，将暴露重要薄弱资产或获取关键数据。`,
		RepairSug: []string{
			`禁止使用从header头中获取ip的方式。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `人脸验证失效`,
		Describe:     `系统实名认证或登录时可能存在人脸认证的防护情况，攻击者可使用修改返回包、伪造人脸等方式绕过。`,
		Level:        3,
		Type:         []int{9},
		RiskAnalysis: `攻击者使用伪造的身份进行认证，将导致用户身份不可信或伪造；使用他人人脸登录将导致用户劫持问题。`,
		RepairSug: []string{
			`禁止仅根据返回包判断认证是否通过，可以在返回header头中更新cookie。`,
			`使用严格/付费的人脸识别库进行识别。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `实名认证绕过`,
		Describe:     `系统部分功能需要实名认证才能使用，攻击者可采取多种方式进行绕过。`,
		Level:        2,
		Type:         []int{9},
		RiskAnalysis: `攻击者可使用虚假信息使用系统，伪造其他客户进行交易等操作。`,
		RepairSug: []string{
			`身份识别信息对接公安备案接口。`,
			`如果存在图片识别的情况，在认证时保证图片和提交信息一致并且通过公安备案校验。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `Cookie属性问题`,
		Describe:     `Cookie属性缺乏相关的安全属性，如Secure属性、HttpOnly属性、Domain属性、Path属性、Expires属性、SameSite属性等。`,
		Level:        1,
		Type:         []int{10},
		RiskAnalysis: `cookie的属性设置不当可能会造成系统用户安全隐患，Cookie0是Cookie http only配置缺陷引起的，在设置Cookie时，可以设置的一个属性，如果Cookie没有设置这个属性，该Cookie值可以被页面脚本读取。例如：当攻击者发现一个XSS漏洞时，通常会写一段页面脚本，窃取用户的Cookie，如果未设置http only属性，则可能导致用户Cookie0，攻击者能够利用该用户的身份进行系统资源访问及操作。`,
		RepairSug: []string{
			`如果网站基于cookie而非服务器端的验证，建议设置Cookie的一些安全属性。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `会话失效时间过长`,
		Describe:     `应用系统的会话失效时间过长。导致服务器性能受损，且由于过长的失效时间会导致可以被多次利用。`,
		Level:        1,
		Type:         []int{10},
		RiskAnalysis: `实施会话保持攻击的前提是攻击者已通过网络中间人攻击窃取用户的SessionID，并能修改用户的Cookie的Expire时间为长久有效，用户不退出系统的前提下，攻击者可长时间利用用户的SessionID登录系统。`,
		RepairSug: []string{
			`服务器端设置Session的存活时间，超过存活时间强制销毁Session。`,
			`当客户端发生变化时（比如IP、UserAgent等信息），要求用户重新登录。`,
			`限制每个用户只允许拥有一个有效Session，当用户再次登录时，攻击者所保持的Session便会失效。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `内容安全策略（CSP）`,
		Describe:     `CSP的主要目标是减少和报告 XSS 攻击，通过CSP策略指定有效域——即浏览器认可的可执行脚本的有效来源——使服务器管理者有能力减少或消除XSS攻击所依赖的载体。当CSP被绕过时，攻击者可以植入XSS代码及嗅探数据。`,
		Level:        2,
		Type:         []int{10},
		RiskAnalysis: `当CSP被绕过后攻击者利用该漏洞可实施窃取用户信息、钓鱼等攻击。`,
		RepairSug: []string{
			`因CSP 的主要目标是减少和报告 XSS 攻击，所以修复方案可参考跨站脚本攻击。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `多点登录问题`,
		Describe:     `关键应用系统允许多点登录，将导致账号密码泄露或被劫持后无感知。`,
		Level:        0,
		Type:         []int{10},
		RiskAnalysis: `攻击者攻陷目标账号后将可以在任意时间登录账号并且不会影响实际用户。`,
		RepairSug: []string{
			`与客户沟通，判断系统是否需要新增多点登录防护。`,
			`在数据库中判断用户当前在线个数，等于1时则将之前的cookie强制失效。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `关键系统登录来源 ip`,
		Describe:     `在运维系统、内网系统(host绑定访问)等关键系统暴露公网的情况下，比如泛微OA可配置登录来源ip，如果未做来源ip限制将会导致薄弱系统/关键系统暴露给攻击者。`,
		Level:        1,
		Type:         []int{10},
		RiskAnalysis: `如果未做来源ip限制将会导致薄弱系统/关键系统暴露给攻击者。`,
		RepairSug: []string{
			`根据实际需要对整个系统或部分账号进行登录来源限制。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `恶意账号锁定问题`,
		Describe:     `通过不断的输入错误的密码可恶意锁定任意账号。`,
		Level:        3,
		Type:         []int{11},
		RiskAnalysis: `若系统认证功能无防自动化处理模块，攻击者可编写脚本批量锁定系统账号。`,
		RepairSug: []string{
			`账户锁定之后应隔一段时间才能继续使用认证功能。`,
			`认证功能处新增防自动化操作，如添加图形验证码。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `短信炸弹`,
		Describe:     `短信轰炸攻击时常见的一种攻击，攻击者通过网站页面中所提供的发送短信验证码的功能处，通过对其发送数据包的获取后，进行重放，如果服务器短信平台未做校验的情况时，系统会一直去发送短信，这样就造成了短信轰炸的漏洞。`,
		Level:        2,
		Type:         []int{11},
		RiskAnalysis: `攻击者通过填写他人的手机号，使用软件Burpsuite的intruder功能重复提交发送短信的请求包，达到短时间内向他人的手机上发送大量垃圾短信的目的。`,
		RepairSug: []string{
			`合理配置后台短信服务器的功能，对于同一手机号码，发送次数不超过3-5次，并且可对发送的时间间隔做限制。`,
			`页面前台代码编写时，加入禁止针对同一手机号进行的次数大于N次的发送，或者在页面中加入验证码功能，并且限制发送的时间间隔。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `邮件炸弹`,
		Describe:     `应用系统未限制邮件的发送次数和频率，造成短时间内大量邮件发送至接收者邮箱，造成大量垃圾邮件。`,
		Level:        2,
		Type:         []int{11},
		RiskAnalysis: `攻击者通过填写他人的邮箱地址，使用软件Burpsuite的intruder功能重复提交发送邮件的请求包，达到短时间内向他人的邮箱中发送大量垃圾邮件的目的。`,
		RepairSug: []string{
			`统一转换邮箱大小写和校验数据格式，避免大小写、空格等绕过。`,
			`新增图形验证码防止重放攻击。`,
			`限制每分钟单个邮箱只可发送一次，单个邮箱每日不超过10次。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `恶意地区ip锁定`,
		Describe:     `应用系统防护会对恶意攻击者ip进行封堵，攻击者可利用其封堵规则不合理或ip可伪造造成危害。`,
		Level:        3,
		Type:         []int{11},
		RiskAnalysis: `攻击者利用防护封堵ip策略，使得网站对地区ip或单个ip拒绝服务。`,
		RepairSug: []string{
			`封堵ip时以单个ip精准封堵。`,
			`获取ip时禁止从header头中获取。`,
			`短时间封堵ip过多时提供异常告警。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `Flash跨域访问`,
		Describe:     `flash跨域通信，依据的是crossdomain.xml文件。该文件配置在服务端，一般为根目录下，限制了flash是否可以跨域获取数据以及允许从什么地方跨域获取数据。`,
		Level:        1,
		Type:         []int{12},
		RiskAnalysis: `攻击者通过如下攻击过程可获取用户敏感信息：攻击者构造一个恶意的flash文件，在attacker.com中嵌入该flash文件；受害者已登录victim.com；受害者浏览含有恶意flash文件的页面；flash文件以受害者的session向victim.com发出任意请求，并接收返回数据；攻击者保存受害者的信息。`,
		RepairSug: []string{
			`限制跨域请求来源，即设置allow-access-from的值，只允许可信域的flash跨域请求。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `jsonp跨域请求`,
		Describe:     `当某网站通过 JSONP 的方式来传递用户认证后的敏感信息时，攻击者通过构造恶意的 JSONP 调用页面，诱导被攻击者访问来达到截取用户敏感信息的目的。`,
		Level:        2,
		Type:         []int{12},
		RiskAnalysis: `攻击者可利用该漏洞结合社会工程学，诱导用户点击某个精心构造的页面，从而达到窃取用户敏感信息的目的。`,
		RepairSug: []string{
			`严格安全的实现CSRF方式调用JSON文件：限制Referer、部署一次性Token等。`,
			`严格安装JSON格式标准输出Content-Type及编码（Content-Type:application/json;charset=utf-8）。`,
			`严格过滤callback函数名及JSON里数据的输出。`,
			`严格限制对JSONP输出callback函数名的长度。`,
			`在callback输出之前加入14字符(如：/**/、回车换行)这样既不影响JSON文件加载，又能一定程度预防14文件格式的输出。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `未授权访问`,
		Describe:     `未授权访问漏洞，是在攻击者没有获取到登录权限或未授权的情况下，或者不需要输入密码，即可通过直接输入网站控制台主页面地址，或者不允许查看的链接便可进行访问，同时进行操作。`,
		Level:        3,
		Type:         []int{0, 12},
		RiskAnalysis: `攻击者猜测管理后台地址或利用已知的访问地址，尝试在未登录的情况下直接访问，常见的后台登录地址有：admin.jsp、index.jsp、main.jsp、left.jsp、right.jsp、top.jsp等。攻击者进入管理后台后可修改Web应用程序设置，利用后台对上传文件过滤不严的缺陷，上传webshell等实施恶意操作。`,
		RepairSug: []string{
			`在系统中，加入用户身份认证机制或者tonken验证，防止可被直接通过连接就可访问到用户的功能进行操作，简而言之，一定对系统重要功能点增加权限控制，对用户操作进行合法性验证。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `CORS跨域请求`,
		Describe:     `CORS允许浏览器向跨域服务器发出XmlHttpRequest请求，CORS与JSONP的区别：是JSONP的升级版，JSONP只能通过get方式请求，CORS支持get和post请求。`,
		Level:        2,
		Type:         []int{12},
		RiskAnalysis: `攻击者可利用该漏洞结合社会工程学，诱导用户点击某个精心构造的页面，从而达到窃取用户敏感信息的目的。`,
		RepairSug: []string{
			`关闭CORS。`,
			`定义源的白名单。`,
			`仅允许安全的协议，验证协议以确保不允许来自不安全通道（HTTP）的交互。`,
			`尽可能的返回”Vary:Origin”这个头部。`,
			`避免使用“Credentials”头。`,
			`限制使用的方法。`,
			`限制缓存的时间。`,
			`仅配置所需要的头。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `越权漏洞`,
		Describe:     `越权访问，这类漏洞是指应用在检查授权（Authorization）时存在纰漏，使得攻击者在获得低权限用户帐后后，可以利用一些方式绕过权限检查，访问或者操作到原本无权访问的高权限功能。在实际的代码安全审查中，这类漏洞往往很难通过工具进行自动化检测，因此在实际应用中危害很大。其与未授权访问有一定差别。`,
		Level:        3,
		Type:         []int{0, 13},
		RiskAnalysis: `目前存在着两种越权操作类型：水平越权操作垂直越权操作。前者指的是攻击者尝试访问与他拥有相同权限的用户的资源；而后者指的是一个低级别攻击者尝试访问高级别用户的资源。`,
		RepairSug: []string{
			`对用户操作进行权限校验，防止通过修改参数进入未授权页面及进行非法操作，建议在服务端对请求的数据和当前用户身份做校验检查。流程描述：在服务器接收到用户发送的页面访问请求时，根据预设的识别策略，从用户的页面访问请求中提取该用户对应的用户唯一标识信息，同时提取所述页面访问请求对应的应答页面中的表单及该表单中不可修改参数，将所述表单及不可修改参数与所述用户唯一标识信息绑定后记录到参数列表中；检测到用户提交请求页面的表单时，将所述请求页面的表单及不可修改参数与该用户对应的所述参数列表中记录的表单及不可修改参数进行比对，控制该用户的访问。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `Cookies伪造`,
		Describe:     `Cookie伪造攻击指攻击者通过修改cookie（Web网站为了辨别用户身份而储存在用户本地终端上的数据（通常经过加密）），获得用户未授权信息，进而盗用身份的过程，攻击者利用此漏洞可打开新账号或获取用户已存在账号的访问权限。`,
		Level:        3,
		Type:         []int{13},
		RiskAnalysis: `攻击者可以对Cookie中的属性进行逆向分析，当Cookie中的唯一标识ID、token和时间戳可预测（如ID采用顺序增加方式，token值是用户名的MD5值）时，攻击者可通过遍历唯一标识ID、猜测token手段构造Cookie，来模拟一个有效的用户登录系统。`,
		RepairSug: []string{
			`服务器端在Set-Cookie时在Cookie的值后面加上一段防篡改的验证串，然后再发送到客户端，客户端得到的Cookie形如：user_name=admin|ab95ef23cc6daecc475de，用|分割的后面部分是防篡改验证串，可以使用以下方式生成：SHA1（cookie内容+密钥）、DES（cookie的内容+密钥）、MD5（cookie内容+密钥），密钥是保存在服务器端的固定字符串，应妥善保管。服务器接收到Cookie后，根据Cookie内容和密钥重新计算防篡改验证串，然后和客户端提交的防篡改验证串比较，若两者一致则认为Cookie未被篡改。`,
			`若使用了WebSphere中间件，通过配置LTPA认证方式可防止Cookie被篡改。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `会话变量可控`,
		Describe:     `会话中的参数可由客户端控制，导致客户端可以控制并修改会话参数。`,
		Level:        2,
		Type:         []int{13},
		RiskAnalysis: `攻击者可通过篡改会话变量，达到欺骗服务器的目的。`,
		RepairSug: []string{
			`禁止从客户端传入会话变量。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `跨站请求伪造(CSRF)`,
		Describe:     `CSRF跨站请求伪造是攻击者通过伪造来受信任用户的请求，达到增加、输出、篡改网站内容的目的。`,
		Level:        2,
		Type:         []int{0, 13},
		RiskAnalysis: `结合社会工程学（如通过电子邮件或聊天发送的链接），攻击者诱骗受害者点击恶意链接，而恶意链接中包含了诸如转账等敏感操作。`,
		RepairSug: []string{
			`通过referer判断页面来源进行CSRF防护，该方式无法防止站内CSRF攻击及referer字段伪造。`,
			`重要功能点使用动态验证码进行CSRF防护。`,
			`通过token方式进行CSRF防护。`,
			`为每个session创建唯一的随机字符串，并在受理请求时验证。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `JWT伪造`,
		Describe:     `JWT(JSON Web Token)是一串json格式的字符串，由服务端用加密算法对信息签名来保证其完整性和不可伪造。Token里可以包含所有必要信息，这样服务端就无需保存任何关于用户或会话的信息，JWT可用于身份认证、会话状态维持、信息交换等。JWT可能会存在信息泄露、修改算法、弱密钥、无签名校验等问题。`,
		Level:        3,
		Type:         []int{13},
		RiskAnalysis: `JWT不安全使用会导致整个系统会话机制失效，存在极大的安全风险。`,
		RepairSug: []string{
			`保证密钥的保密性签名算法固定在后端，强校验JWT签名。`,
			`不以JWT里的算法为标准。`,
			`避免敏感信息保存在JWT中。`,
			`尽量JWT的有效时间足够短。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `跨站脚本攻击(XSS)`,
		Describe:     `XSS跨站脚本漏洞产生的原因是网站应用程序在编写时未对用户提交至服务器的数据进行合法性校验，即没有进行有效地特殊字符过滤，导致网站服务器存在安全风险。`,
		Level:        3,
		Type:         []int{0, 14},
		RiskAnalysis: `常见的反射型跨站脚本攻击步骤如下：攻击者创建并测试恶意URL；攻击者确信受害者在浏览器中加载了恶意URL；攻击者采用反射型跨站脚本攻击方式安装键盘记录器、窃取受害者的cookie、窃取剪贴板内容、改变网页内容（例如下载链接）。存储型跨站脚本攻击最为常见的场景是将跨站脚本写入文本输入域中，如留言板、博客或新闻发布系统的评论框。当用户浏览留言和评论时，浏览器执行跨站脚本代码。`,
		RepairSug: []string{
			`其防御的根本就是在将用户提交的代码显示到页面上时做好一系列的过滤与转义。`,
			`过滤输入的数据，对例如：“ ‘ ”，“ “ ”，” < “，” > “，” on* “，script、iframe等危险字符进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口，也包括HTTP请求中的Cookie中的变量，HTTP请求头部中的变量等。`,
			`不仅验证数据的类型，还要验证其格式、长度、范围和内容。`,
			`不仅在客户端做数据的验证与过滤，关键的过滤步骤在服务端进行。`,
			`对输出到页面的数据进行相应的编码转换，如HTML实体编码、JS编码等。`,
			`对输出的数据也要检查，数据库里的值有可能会在一个大网站的多处都有输出，即使在输入做了编码等操作，在各处的输出点时也要进行检查。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `HTTP响应分割`,
		Describe:     `HTTP响应头拆分攻击是一种新型的Web攻击方式，它产生了很多安全漏洞，如Web缓存感染、用户信息涂改、窃取敏感用户页面、跨站脚本漏洞等。这种攻击方式与其衍生的一系列技术的产生，是由于Web应用程序未对用户提交的数据进行严格过滤和检查，导致攻击者可以提交一些恶意字符，如对用户输入的CR和LF字符没有进行严格的过滤。`,
		Level:        2,
		Type:         []int{14},
		RiskAnalysis: `攻击者可以发送一个或几个HTTP指令使服务器产生攻击者想得到的输出。攻击者构造的HTTP指令使服务器误把几条HTTP请求看成一条完整的HTTP请求来解释。如果攻击者可以控制第一条请求的部分内容，而且完全控制着第二条及后面的HTTP请求，即从HTTP状态行一直到HTTP请求的尾部，攻击者会发送多个HTTP请求指令到目标系统，例如第一条请求指令使得服务器完全接受两个HTTP请求，第二条请求通常是在服务器上请求一些非法资源，而服务器将会自动匹配到第二条请求的响应，并输出攻击者想要请求的资源，从而达到攻击目的。`,
		RepairSug: []string{
			`限制用户输入的CR和LF，对CR和LF字符正确编码后再输出，以防止攻击者注入自定义的HTTP头。`,
			`限制输入URL的长度。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `Host头攻击`,
		Describe:     `Web应用程序获取网站域名一般是依赖HTTP Host header（比如在JSP里通过request.getHeader()获取），这里的header很多情况下是不可靠的。攻击者恶意利用HTTP Host header会导致HTTP Host头攻击发生。`,
		Level:        2,
		Type:         []int{14},
		RiskAnalysis: `大部分的Web应用程序未经html编码直接把header输出到了页面中这样处理header一般会产生两种常见的攻击：缓存污染和密码重置。缓存污染是指攻击者通过控制一个缓存系统来将一个恶意站点的页面返回给用户。密码重置这种攻击主要是因为发送给用户的内容是被污染的，即间接的劫持邮件。`,
		RepairSug: []string{
			`服务器方面：由于http请求的特点，host header的值其实是不可信的。唯一可信的只有SERVER_NAME，这个在Apache和Nginx里可以通过设置一个虚拟机来记录所有的非法hostheader。在Nginx里还可以通过指定一个SERVER_NAME名单，Apache也可以通过指定一个SERVER_NAME名单并开启UseCanonicalName选项。建议两种方法同时使用。`,
			`应用方面：在网站安装和初始化的时候，要求管理员提供一个可信任的域名白名单。如果这个实现起来比较困难，那至少也要保证使用使用getServerName()代替getHeader(“Host”)。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `SQL注入`,
		Describe:     `SQL注入漏洞产生的原因是网站应用程序在编写时未对用户提交至服务器的数据进行合法性校验，即没有进行有效地特殊字符过滤，导致网站服务器存在安全风险。`,
		Level:        3,
		Type:         []int{0, 14},
		RiskAnalysis: `攻击者可以利用该漏洞执行任意SQL语句，如查询数据、下载数据、写入webshell、执行系统命令以及绕过登录限制等。`,
		RepairSug: []string{
			`使用预编译语句，使用PDO需要注意不要将变量直接拼接到PDO语句中。所有的查询语句都使用数据库提供的参数化查询接口，参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口，使用此接口可以非常有效的防止SQL注入攻击。`,
			`对进入数据库的特殊字符（’”<>&*;等）进行转义处理，或编码转换。`,
			`确认每种数据的类型，比如数字型的数据就必须是数字，数据库中的存储字段必须对应为int型。`,
			`数据长度应该严格规定，能在一定程度上防止比较长的SQL注入语句无法正确执行。`,
			`网站每个数据层的编码统一，建议全部使用UTF-8编码，上下层编码不一致有可能导致一些过滤模型被绕过。`,
			`严格限制网站用户的数据库的操作权限，给此用户提供仅仅能够满足其工作的权限，从而最大限度的减少注入攻击对数据库的危害。`,
			`避免网站显示SQL错误信息，比如类型错误、字段不匹配等，防止攻击者利用这些错误信息进行一些判断。`,
			`过滤危险字符，例如：采用正则表达式匹配union、sleep、and、select、load_file等关键字，如果匹配到则终止运行。`,
			`部署Web应用防火墙。`,
			`对数据库操作进行监控。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `XML注入`,
		Describe:     `可扩展标记语言(Extensible Markup Language, XML)，用于标记电子文件使其具有结构性的标记语言，可以用来标记数据、定义数据类型，是一种允许用户对自己的标记语言进行定义的源语言。XML是标准通用标记语言(SGML)的子集，非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。如果在查询或者插入时，没有对用户的输入进行过滤或者转义，则可以修改XML数据格式，改变XML节点。`,
		Level:        3,
		Type:         []int{0, 14},
		RiskAnalysis: `XML注入攻击广泛用于Web系统的攻击。攻击方式主要有以下几种：使用超长标签像<AAAAAAA/>，多达1024个A，或者使用超多的属性像<AA a= ‘a’b=‘b’…> ，由于XML文件本身标签所占用的资源通常比内容多，在数据和属性比较多时，XML文件将变得非常庞大，给XML文件的传输和解析带来困难；直接修改XML数据格式，改变XML节点。递归负载攻击，注入深层次的循环嵌套的XML数据，造成服务器上XML分析器崩溃，造成系统计算资源耗尽而被Dos。`,
		RepairSug: []string{
			`严格检查用户输入的字符。`,
			`操作XML时对格式字符进行转义处理。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `XML外部实体框架引入(XXE)`,
		Describe:     `XXE外部实体框架引入漏洞发生在应用程序解析XML输入时，没有禁止外部实体的加载，导致可加载恶意外部文件，造成文件读取、命令执行、内网端口扫描、×××内网网站、发起dos×××等危害。xxe漏洞触发的点往往是可以上传xml文件的位置，没有对上传的xml文件进行过滤，导致可上传恶意xml文件。`,
		Level:        3,
		Type:         []int{0, 14},
		RiskAnalysis: `XML外部实体攻击，利用<!Entityname SYSTEM “URI”>。XML文件的解析依赖libxml库，而libxml2.9以前的版本默认支持并开启了外部实体的引用，服务端解析用户提交的XML文件时，未对XML文件引用的外部实体（含外部普通实体和外部参数实体）做合适的处理，并且实体的URL支持file://和ftp://等协议，攻击者可以在XML文件中声明URI指向服务器本地的实体造成攻击。实体攻击可导致信息泄露、任意文件读取、DOS攻击和代码执行等问题。`,
		RepairSug: []string{
			`操作XML时对格式字符进行转义处理。`,
			`检查所使用的底层XML解析库，默认禁止外部实体的解析。`,
			`若使用第三方应用代码需要及时升级补丁。`,
			`对用户提交的XML数据进行过滤，如关键词：<!DOCTYPE和<!ENTITY或者SYSTEM和PUBLIC等。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `XPATH注入`,
		Describe:     `XPath注入攻击是指利用XPath解析器的松散输入和容错特性，能够在URL、表单或其它信息上附带恶意的XPath查询代码，以获得权限信息的访问权并更改这些信息。XPath注入攻击是针对Web服务应用新的攻击方法，它允许攻击者在事先不知道XPath查询相关知识的情况下，通过XPath查询得到一个XML文档的完整内容。`,
		Level:        3,
		Type:         []int{0, 14},
		RiskAnalysis: `XPath注入攻击利用两种技术，即XPath扫描和XPath查询布尔化。通过该攻击，攻击者可以控制用来进行XPath查询的XML数据库。这种攻击可以有效地对付使用XPath查询（和XML数据库）来执行身份验证、查找或者其它操作。XPath注入攻击同SQL注入攻击类似，但和SQL注入攻击相比较，XPath在以下方面具有优势：广泛性、危害性大。`,
		RepairSug: []string{
			`数据提交到服务器上端，在服务端正式处理这批数据之前，对提交数据的合法性进行验证。`,
			`检查提交的数据是否包含特殊字符，对特殊字符进行编码转换或替换、删除敏感字符或字符串。`,
			`对于系统出现的错误信息，以IE错误编码信息替换，屏蔽系统本身的出错信息。`,
			`参数化XPath查询，将需要构建的XPath查询表达式，以变量的形式表示，变量不是可以执行的脚本。如下代码可以通过创建保存查询的外部文件使查询参数化：declare variable $loginID as xs：string external； declare variable $password as xs：string external； //users/user[@loginID=$loginID and @password= $password]。`,
			`通过MD5、SSL等加密算法，对于数据敏感信息和在数据传输过程中加密， 即使某些非法用户通过非法手法获取数据包，看到的也是加密后的信息。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `命令注入(Command Injection)`,
		Describe:     `命令注入攻击是指由于Web应用程序对用户提交的数据过滤不严格，导致黑客可以通过构造特殊命令字符串的方式，将数据提交至Web应用程序中，并利用该方式执行外部程序或系统命令实施攻击，非法获取数据或者网络资源等。在命令注入的漏洞中，最为常见的是PHP的命令注入。`,
		Level:        3,
		Type:         []int{0, 14},
		RiskAnalysis: `攻击者可利用命令注入漏洞直接执行系统命令，获取服务器权限。`,
		RepairSug: []string{
			`尽量不去执行外部的应用程序或命令。`,
			`使用自定义函数或函数库实现外部应用程序或命令的功能。`,
			`在执行system、eval等命令执行功能的函数前，校验参数内容。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `模板注入(SSTI)`,
		Describe:     `服务端接收了用户的恶意输入以后，未经任何处理就将其作为Web应用模板内容的一部分，模板引擎在进行目标编译渲染的过程中，执行了用户插入的可以破坏模板的语句，因而可能导致了敏感信息泄露、代码执行等问题。`,
		Level:        3,
		Type:         []int{0, 14},
		RiskAnalysis: `攻击者可利用模板注入漏洞直接执行系统命令，获取服务器权限。`,
		RepairSug: []string{
			`尽可能加载静态模板文件。`,
			`不要允许用户控制此类文件或其内容的路径。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `任意文件上传`,
		Describe:     `任意文件上传漏洞通常由于代码中对文件上传功能所上传的文件过滤不严或web服务器相关解析漏洞未修复而造成的，如果文件上传功能代码没有严格限制和验证用户上传的文件后缀、类型等，攻击者可通过文件上传点上传任意文件，包括网站后门文件（webshell）控制整个网站。`,
		Level:        3,
		Type:         []int{0, 14},
		RiskAnalysis: `攻击者直接上传webshell到服务器，从而远程控制服务器。`,
		RepairSug: []string{
			`对上传文件类型进行验证，除在前端验证外在后端依然要做验证，后端可以进行扩展名检测，重命名文件，MIME类型检测以及限制上传文件的大小等限制来防御，或是将上传的文件14文件存储服务器中。`,
			`严格限制和校验上传的文件，禁止上传恶意代码的文件，同时限制相关上传文件目录的执行权限，防止木马执行。`,
			`对上传文件格式进行严格校验，防止上传恶意脚本文件；。`,
			`严格限制上传的文件路径。`,
			`文件扩展名服务端白名单校验。`,
			`文件内容服务端校验。`,
			`上传文件重命名。`,
			`隐藏上传文件路径。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `任意文件下载`,
		Describe:     `任意文件下载漏洞不同于网站目录浏览，此漏洞不仅仅可遍历系统下web中的文件，而且可以浏览或者下载到系统中的文件，攻击人员通过任意文件下载漏洞可以获取系统文件及服务器的配置文件等等。一般来说，他们利用服务器API、文件标准权限进行攻击。`,
		Level:        3,
		Type:         []int{0, 14},
		RiskAnalysis: `如果web设计者设计的web内容没有恰当的访问控制，允许http遍历，攻击者就可以访问受限的目录，并可以在web根目录以外执行命令。`,
		RepairSug: []string{
			`净化数据：对用户传过来的文件名参数进行硬编码或统一编码，对文件类型进行白名单控制，对包含恶意字符或者空字符的参数进行拒绝。`,
			`web应用程序可以使用chroot环境包含被访问的web目录，或者使用绝对路径+参数来访问文件目录，时使其即使越权也在访问目录之内。www目录就是一个chroot应用. 由chroot创造出的那个根目录，叫做“chroot监狱”（所谓"监狱"就是指通过chroot机制来更改某个进程所能看到的根目录，即将某进程限制在指定目录中，保证该进程只能对该目录及其子目录的文件有所动作，从而保证整个服务器的安全，详细具体chroot的用法，可参考：http://blog.csdn.net/frozen_fish/article/details/2244870。`,
			`任意文件下载漏洞也有可能是web所采用的中间件的版本低而导致问题的产生，例如ibm的websphere的任意文件下载漏洞，需更新其中间件的版本可修复。`,
			`要下载的文件地址保存至数据库中。`,
			`文件路径保存至数据库，让用户提交文件对应ID下载文件。`,
			`用户下载文件之前需要进行权限判断。`,
			`文件放在web无法直接访问的目录下。`,
			`不允许提供目录遍历服务。`,
			`公开文件可放置在web应用程序下载目录中通过链接进行下载。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `文件包含漏洞`,
		Describe:     `开发人员通常处于灵活性考虑，会将一些需要重复使用的代码写在单个文件中，其它代码文件如需使用这些公共代码时直接使用文件包含函数包含公共代码文件即可。文件包含漏洞大多出现在PHP代码中，PHP中文件包含的函数包括：include()、include_once()、require()、require_once()。如果传入这些函数的参数可控则可能引发文件包含漏洞。文件包含漏洞一般分为本地文件包含（LFI）以及远程文件包含（RFI），如果只能包含当前服务器上的文件则为本地文件包含，可以包含远程服务器的文件为远程文件包含，是否为远程文件包含取决于php.ini配置里的allow_url_fopen是否开启。`,
		Level:        3,
		Type:         []int{0, 14},
		RiskAnalysis: `文件包含漏洞一般存在两种危害：读取任意文件；代码执行。`,
		RepairSug: []string{
			`传入包含函数的参数尽量不要设置为用户可控。`,
			`路径限制，限制被包含的文件只能在某个目录下，禁止目录跳转符号如../。`,
			`对参数进行白名单检验。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `反序列化漏洞`,
		Describe:     `序列化就是把对象转换成字节流，便于保存在内存、文件、数据库中，Java中的ObjectOutputStream类的writeObject()方法可以实现序列化。反序列化即逆过程，由字节流还原成对象。ObjectInputStream类的readObject()方法用于反序列化。ApacheCommons Collections允许链式的任意的类函数反射调用。反序列化漏洞就是在反序列化过程中，攻击者可以对将要转换的字符串进行操控，从而达到任意代码执行的操作。`,
		Level:        3,
		Type:         []int{0, 14},
		RiskAnalysis: `攻击者可以对将要转换的字符串进行操控，从而达到任意代码执行的操作。java反序列化漏洞存在于各大业务系统中，影响范围大，且自动化利用工具比较成熟，攻击成本较低。`,
		RepairSug: []string{
			`不要把用户的输入或者是用户可控的参数直接放进反序列化的操作中去，需要进行过滤再传参。`,
			`在进入反序列化函数之前，对参数进行限制过滤。`,
			`尽量使用原生类型序列化数据，可以大大限制了序列化和反序列化类的范围，减少攻击者利用机会。`,
			`更新序列化库和框架，减少已知的漏洞利用。`,
			`指定自定义类加载器，只允许加载特定类并限制类的范围权限。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `HTTP参数污染`,
		Describe:     `HTTP参数污染漏洞是由于HTTP协议允许同名参数的存在，同时，后台处理机制对同名参数的处理方式不当，造成“参数污染”。`,
		Level:        3,
		Type:         []int{15},
		RiskAnalysis: `攻击者可以利用此漏洞对网站业务造成攻击，甚至结合14漏洞，获取服务器数据或获取服务器最高权限。`,
		RepairSug: []string{
			`对用户输入数据的参数的格式进行验证。`,
			`在WAF或14网关设备（比如IPS）在检查URL时，对同一个参数被多次赋值的情况进行特殊处理。`,
			`在代码层面，编写WEB程序时，要通过合理的$_GET方法获取URL中的参数值，而尝试获取web服务器返回给程序的14值时要慎重处理。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `条件竞争漏洞`,
		Describe:     `开发者在进行代码开发时可能会倾向于认为代码会以线性的方式执行，可能会忽略了并行服务器会并发执行多个线程。当多个线程在同一时刻对数据进行读写操作时，可能会引发条件竞争漏洞，如在购物时时使用多线程去购买商品，出现最后余额为负数，购买超额数量的商品。`,
		Level:        3,
		Type:         []int{0, 15},
		RiskAnalysis: `在购买商品场景中出现条件竞争漏洞，会导致购买超出原本金额能够购买的商品数量，或者在转账场景中出现条件竞争漏洞时，会导致转账的金额多于账户可用余额，最后出现账户金额为负数。`,
		RepairSug: []string{
			`使用加锁访问，对数据库的并发访问进行控制，使得每次读取到的数据都一致，避免一个事务读取另一个事务未提交的数据。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `密码策略测试`,
		Describe:     `网站应增加密码复杂度策略，如果不设置密码复杂性策略，密码可以设置成任何密码，为了防止将密码设置成弱密码，将密码策略设置成必须符合密码复杂性要求，如长度至少为8位，要求同时包含字母大小写、数字和特殊字符。`,
		Level:        2,
		Type:         []int{15},
		RiskAnalysis: `攻击者可以使用弱密码入侵他人账号或者管理员账号。`,
		RepairSug: []string{
			`在不影响业务的前提下，在服务端增加有效的密码复杂度策略，不允许设置弱密码。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:         `请求走私(HTTP Request Smuggling)`,
		Describe:     `HTTP请求走私是一种干扰网站正常处理从一个或多个用户收到的HTTP请求的方法，请求走私漏洞在本质上通常很关键，允许攻击者绕过安全控制，获得对敏感数据的未授权访问，并直接危害14应用程序的用户。`,
		Level:        3,
		Type:         []int{0, 15},
		RiskAnalysis: `攻击者可以利用该漏洞存储HTTP 请求，XSS攻击或访问内网资源。`,
		RepairSug: []string{
			`禁用后端连接的重用，以便通过单独的网络连接发送每个后端请求。`,
			`后端连接使用HTTP/2，因为该协议防止了请求之间边界的模糊性。`,
			`对前端和后端服务器使用完全相同的web服务器软件，以便它们在请求之间的边界上达成一致。`,
		},
		Link: []string{"https://www.baidu.com/"},
	}, {
		Name:     `缓存投毒`,
		Describe: `缓存投毒攻击点在于服务端的缓存功能，一些服务端会存储/缓存频繁被请求内容，当多个用户请求同一资源文件时，服务端直接返回事先缓存好的资源，从而减少服务端不必要的工作量。但若缓存的内容是被攻击者篡改过的话，那么所有请求该缓存资源的用户都将受到攻击影响。`,
		Level:    3,
		Type:     []int{15},
		RiskAnalysis: `缓存投毒可以是一种破坏性强且多样性的攻击手段，结合XSS、JavaScript注入、开放
重定向等。在不设置双向认证的情况下，攻击者可以轻易地完成中间人攻击，双向认证可以提高攻击成本。`,
		RepairSug: []string{
			`关闭缓存功能，用CDN替代。`,
			`缓存限制为纯静态响应。`,
			`禁止fat请求。`,
		},
		Link: []string{"https://www.baidu.com/"},
	},
}
